package com.huluobo.a2107jetpackkotlindemo.lifecycle

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.lifecycle.ViewModelProvider
import com.huluobo.a2107jetpackkotlindemo.R

/**
 * LifeCycle总结  观察者模式三要素 观察者(Observer) 被观察者(Observable) 订阅关系(subscribe)
 * 1.如果需要使用LifeCycle,首先需要实现一个接口LifecycleObserver 让他可以去感知(观察)宿主的生命周期
 * 2.需要是一个宿主,LifeCycleOwner,AppCompatActivity 已经实现了宿主接口,所以可以直接调用
 * 3.通过  lifecycle.addObserver(),来实现订阅关系
 * 4.可以有效解决在宿主对象中控制其他控件的生命周期,让观察者可以根据宿主的生命周期自行多出判断,来调用某些方法
 *
 */
class ADActivity : AppCompatActivity() {

//    private var millisInFuture: Long = 10000L //设置广告时间为5秒

    companion object {
        const val KEY = "key"
    }

    lateinit var adViewModel: AdViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_adactivity)

//        //let 相当于判断这个参数或者值不等于空的时候会怎么样,相当于用if判断了一次
//        savedInstanceState.let {
//            if (it != null) {
//                millisInFuture = it.getLong(KEY)
//            }
//        }
        adViewModel = ViewModelProvider(this)[AdViewModel::class.java]

        val time = findViewById<TextView>(R.id.time)
        val go = findViewById<Button>(R.id.btn_go)
        val adManager = AdManager(adViewModel)
        lifecycle.addObserver(adManager)

        adViewModel.timingResult.observe(this) {
            time.text = "广告剩余时间:${it}秒"
            if (it <= 1L) {
                val intent = Intent(this@ADActivity, MainActivity::class.java)
                this@ADActivity.startActivity(intent)
                this@ADActivity.finish()
            }
        }

        go.setOnClickListener {
            val intent = Intent(this@ADActivity, MainActivity::class.java)
            this@ADActivity.startActivity(intent)
            this@ADActivity.finish()
        }
    }
}